/**
 * Generali Solutions d'assurances - Tous droits réservés &copy; 2007 - 2010
 */
package fr.generali.accueilclient.ref.bancaire.services;

import java.util.Map;

import fr.generali.accueilclient.banque.om.IBanqueGestionnaire;
import fr.generali.accueilclient.client.om.IContact;
import fr.generali.accueilclient.client.om.IContratsRib;
import fr.generali.accueilclient.client.om.ICoordonneeBancaire;
import fr.generali.accueilclient.commun.exception.AccueilClientBusinessException;
import fr.generali.accueilclient.utils.code.error.ControleIBANCodeError;

/**
 * Service pour tout ce qui concerne les données client bancaires
 * 
 * @author selrhazala
 */
public interface IRefBancaireService {

    /**
     * @param contact le contact
     * @return ICoordonneeBancaire le rib
     * @throws AccueilClientBusinessException exception fonctionnelle
     */
    ICoordonneeBancaire gererRib(IContact contact) throws AccueilClientBusinessException;
    
    /**
     * @param contact le contact
     * @throws AccueilClientBusinessException exception fonctionnelle
     */
    void desactiverRib(IContact contact) throws AccueilClientBusinessException;
    
    /**
     * @param iban l'iban a contrôlé
     * @return map codeError et IBanqueGestionnaire
     */
    Map<ControleIBANCodeError, IBanqueGestionnaire> controleIBAN(String iban);
    
    /**
     * @param contratsRib les contrats à affecter au rib concerné
     * @return retour String
     * @throws AccueilClientBusinessException l'exception fonctionnelle
     */
    String affecterRib(IContratsRib contratsRib) throws AccueilClientBusinessException;
}
